package com.travelsky.flash.api;

import java.io.IOException;
import java.util.List;

import com.travelsky.flash.vo.FileMoveOrCopyVO;
import com.travelsky.flash.vo.HostAccessVO;
import com.travelsky.flash.vo.SVNConfigVO;
import com.travelsky.flash.vo.DestinationHostVO;
import com.travelsky.flash.vo.SourceHostVO;

public interface IProcessWar {

	/**
	 * @Description 将工程代码检出
	 * @param svncfgVO
	 * @author xuchao
	 * @date 2015-5-27 上午11:24:41
	 */
	int svnCheckOut(SVNConfigVO svncfgVO,String svnDestDir);
	
	/**
	 * @Description SVN 更新 
	 * @param svncfgVO
	 * @param svnDestDir
	 * @return
	 * @author syuan
	 * @date 2015年6月1日  下午2:20:02
	 */
	int svnUpdate(SVNConfigVO svncfgVO,String svnDestDir);

	
	/**
	 * @Description 
	 * @param sourceHostVO 打包服务器
	 * @param svnDestDir svn下载保存路径
	 * @param fileMoveOrCopyVO 文件copy 
	 * @param destHosts 目标服务器（分发服务器）
	 * @return
	 * @throws IOException
	 * @author xuchao
	 * @date 2015-5-28  上午11:16:06
	 */
	public int warBuildAndDistribute(SourceHostVO sourceHostVO);

	/**
	 * @Description 
	 * @param serverHosts 包分发服务
	 * @return
	 * @throws IOException
	 * @author xuchao
	 * @date 2015-5-28  上午11:28:15
	 */
	public int distributeWar(DestinationHostVO server, FileMoveOrCopyVO backUpVO, String warName)
			throws IOException;
	/**
	 * @Description 启动指定服务器上的服务
	 * @param serverHosts
	 * @author xuchao
	 * @date 2015-5-27 下午1:35:46
	 */
	int startService(List<DestinationHostVO> serverHosts);

	/**
	 * @Description 停止指定服务器上的服务
	 * @param serverHosts
	 * @author xuchao
	 * @date 2015-5-27 下午1:35:18
	 */
	int stopService(List<DestinationHostVO> serverHosts);

	
	/**
	 * @Description 
	 * @param serverHosts
	 * @param fileMoveOrCopyVO 软链接物理文件路径和文件名、虚文件路径和文件名
	 * @return
	 * @author xuchao
	 * @date 2015-5-28  下午5:26:20
	 */
	int switchWar(HostAccessVO destVO,FileMoveOrCopyVO fileMoveOrCopyVO);
	
	/**
	 * @Description copy文件
	 * @param hostAccessVO
	 * @param fileMoveOrCopyVO 指定copy的源、目的路径及文件名，不赋值目的文件名时默认为源文件名
	 * @return
	 * @author xuchao
	 * @date 2015-5-28  下午2:24:01
	 */
	int copyFile(HostAccessVO hostAccessVO,
			FileMoveOrCopyVO fileMoveOrCopyVO);
	/**
	 * @Description 移动文件
	 * @param hostAccessVO
	 * @param fileMoveOrCopyVO
	 * @return
	 * @author xuchao
	 * @date 2015-5-28  下午2:46:44
	 */
	int moveFile(HostAccessVO hostAccessVO,
			FileMoveOrCopyVO fileMoveOrCopyVO);
	/**
	 * @Description 
	 * @param hostAccessVO
	 * @param pathFolderName 路径及文件夹名称
	 * @return
	 * @author xuchao
	 * @date 2015-5-28  下午2:26:48
	 */
	int makedir(HostAccessVO hostAccessVO,String pathFolderName);
	
	/**
	 * @Description 日志跟踪
	 * @param hostAccessVO 访问服务器
	 * @param dirAndFileName 目录及log文件名
	 * @param tailLines 查看最后行输
	 * @return
	 * @author xuchao
	 * @date 2015-6-2  上午11:15:26
	 */
	int tailf(HostAccessVO hostAccessVO,String dirAndFileName,int tailLines);
}
